package com.easychat.test;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class SocketClient {
    public static void main(String[] args) {
    //声明了一个 Socket 类型的变量 socket，用于存储客户端的Socket连接。
    Socket socket = null;
    try {
        //创建一个Socket对象，指定IP为127.0.0.1和端口为1024，需要与服务端一致以进行通信
        socket = new Socket("127.0.0.1",1024);
        //获取输出流
        OutputStream outputStream = socket.getOutputStream();
        //创建一个 PrintWriter 对象，它包装了输出流，使得写入操作更加方便。
        PrintWriter printWriter = new PrintWriter(outputStream);
        System.out.println("请输入内容");

        //创建一个新的线程，用于接收用户输入并写入到服务器
        new Thread(() -> {
            while (true) {
                //创建了一个 Scanner 对象，用于读取控制台输入。
                Scanner scanner = new Scanner(System.in);
                //读取控制台输入：下一行
                String input = scanner.nextLine();
                try{
                    //将输入写入到服务器
                    printWriter.println(input);
                    //刷新缓冲区，确保数据被发送出去
                    printWriter.flush();
                }catch (Exception e){
                    e.printStackTrace();
                    break;
                }

            }

        }).start();

        //从socket对象中获取输入流
        InputStream inputStream = socket.getInputStream();
        //字符流读取器，指定字符编码为 "UTF-8"
        InputStreamReader inreader = new InputStreamReader(inputStream, "UTF-8");
        //创建缓冲读取器，提高读取效率
        BufferedReader bufferedReader = new BufferedReader(inreader);


        new Thread(()->{
            while (true){
                try {
                    String readData = bufferedReader.readLine();
                    System.out.println("收到服务器消息->" + readData);
                }catch(Exception e){
                    e.printStackTrace();
                    break;
                }
            }
        }).start();
    }catch(Exception e){
        e.printStackTrace();
        }
    }
}
